#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL.Math;
namespace Cephei.QL.Math.Interpolations
{
     // <summary> 
	// ! Classes derived from this class will provide interpolated values from two sequences of length \f$ N \f$ and \f$ M \f$, representing the discretized values of the \f$ x \f$ and \f$ y \f$ variables, and a \f$ N \times M \f$ matrix representing the tabulated function values.
	// </summary>
    [Guid ("08B57642-986D-49a5-8D40-7F54667E629C"),ComVisible(true)]
	public interface IInterpolation2D : Cephei.QL.Math.Interpolations.IExtrapolator
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 Boolean IsInRange(Double x, Double y);
        
		 UInt64 LocateX(Double x);
        
		 UInt64 LocateY(Double y);
        
		 IInterpolation2D Update {get;}
        
		 Double XMax {get;}
        
		 Double XMin {get;}
        
		 Cephei.IVector<Double> XValues {get;}
        
		 Double YMax {get;}
        
		 Double YMin {get;}
        
		 Cephei.IVector<Double> YValues {get;}
        
		 Cephei.QL.Math.IMatrix ZData {get;}
    }

    // <summary> 
	// ! Classes derived from this class will provide interpolated values from two sequences of length \f$ N \f$ and \f$ M \f$, representing the discretized values of the \f$ x \f$ and \f$ y \f$ variables, and a \f$ N \times M \f$ matrix representing the tabulated function values. Factory
	// </summary>
   	[ComVisible(true)]
    public interface IInterpolation2D_Factory // : Collection_Factory<IInterpolation2D, ICell<IInterpolation2D>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    IInterpolation2D Create ();
    }
}

